Assigning tasks in a distributed system

ABSTRACT

A method and apparatus are provided for assigning tasks in a distributed system. The method comprises indicating to one or more remote systems in the distributed system that a task is available for processing based on a list identifying the one or more remote systems. The method further comprises receiving at least one response from the one or more remote systems capable of performing the task based on the indication. The method comprises allowing at least one of the remote systems to perform the task based on the at least one received response.

BACKGROUND OF THE INVENTION

1. Field of the Invention

The invention generally relates to assigning tasks for processing in adistributed system, and, in particular, to assigning tasks for compilingin a distributed compilation system.

2. Description of the Related Art

Distributed computing has become increasingly popular with thematuration of network technology. Oftentimes, it is desirable to exploitthe processing power of various networked machines that may otherwise beidle or under utilized. For example, it may be desirable to use theprocessing power of the networked machines to compute computationallytaxing tasks, such as image processing or rendering, audio processing,video processing, encrypting, decrypting, or the like.

In a typical disturbed computing environment, a central machine on anetwork divides a project into a number of tasks, which are assigned toone or more of the networked machines for processing or manipulation.The results are then returned to the central machine once the processingis complete. The assignment of tasks to the machines can be based on anumber of criteria, including assigning the tasks in a simplisticround-robin fashion or based on some measure of predicted or historicalperformance (e.g., processor speed, available memory, etc.). Thesemethods of assigning tasks can be costly in terms of overhead, and canoften produce inefficient results.

Distributed systems are also employed in the context of softwaredevelopment. Many software development projects suffer from slow codecompilation, which can result in longer “edit, compile, test” cycles,thereby extending the amount of time it takes for developers to deploy afinished software product. Whether it is a few hours wait for a fullproduct build, or a few minutes spent several times a day for anincremental build to finish, the persistent long delays associated withcompilation can result in frustration, loss of productivity, and wastedtime. To expedite the compilation process, practitioners have turned todistributed compilation systems, examples of which include TeamBuilder®and distcc. These distributed compilation systems improve compilationtimes by sharing the compilation processing across a group of networkedmachines. Like in other distributed systems, distributed compilationsystems, such as distcc, employ a centrally controlled client machine,which is typically the developer's workstation or laptop. A distccclient runs on the client machine, along with command line tools such asa preprocessor, a linker, and other tools employed in the software buildprocess. Any number of “volunteer” machines assist the client to buildthe program, by running the compiler and assembler as required.

In conventional distributed compilation systems, the client machineschedules tasks by assigning them to the volunteer machines. In somesystems, clients may delegate tasks to the volunteer machines using asimplistic circular, round-robin scheme. In other systems, a clientgathers information about the operational capabilities (e.g., processorspeed, availability) of the various volunteer machines, and then assignsthe tasks to the volunteer machines based on the operational capabilityof the volunteer machine. Each of these schemes, however, has itsdrawbacks.

A round-robin scheme is not particularly efficient for delegating tasksbecause of the potential mismatch between the amount of work load thatis assigned to a particular volunteer machine and its processingcapabilities. For example, based on a round-robin scheme, a clientmachine may delegate a task to a slower, less capable volunteer machineinstead of another faster volunteer machine, simply because the slowermachine is next in line to receive the task. Similarly, the clientmachine may routinely delegate a task to a volunteer machine that ispresently overloaded over an under-utilized volunteer machine basedsimply on the relative positions of the two volunteer machines in theround-robin scheme.

Like the round-robin schemes, schemes in which the client first gathersinformation about the various volunteer machines before work is assignedalso tend to be inefficient and inflexible. This is because the clientmachine (or another machine that is designated to gather theinformation) is constantly burdened with the responsibility ofascertaining the operational capabilities of the various volunteermachines on the network and then ensuring that these operationalcapabilities are up-to-date. Constantly maintaining an up-to-date listof the various volunteer machines can be inefficient, particularly ifsome of those volunteer machines are rarely or never utilized. Thus,there is a need to efficiently delegate tasks in distributed compilationsystems.

The present invention is directed to overcoming, or at least reducing,the effects of, one or more of the problems set forth above.

SUMMARY OF THE INVENTION

In one aspect of the instant invention, a method is provided forassigning tasks in a distributed system. The method comprises indicatingto one or more remote systems in the distributed system that a task isavailable for processing based on a distribution list. The methodfurther comprises receiving at least one response from the one or moreremote systems capable of performing the task based on the indication.The method comprises allowing at least one of the remote systems toperform the task based on the at least one received response.

In another aspect of the instant invention, an apparatus is provided forassigning tasks in a distributed system. The apparatus comprises aninterface that is adapted to communicate with one or more remotesystems. The apparatus further comprises a control unit that iscommunicatively coupled to the interface, where the control unit isadapted to indicate to the one or more remote systems in the distributedsystem that a task is available for processing based on a listidentifying the one or more remote systems, receive at least oneresponse from the one or more remote systems capable of performing thetask based on the indication, and allow at least one of the remotesystems to perform the task based on the at least one received response.

In yet another aspect of the instant invention, an article comprisingone or more machine-readable storage media containing instructions isprovided for assigning tasks in a distributed system. The instructions,when executed, enable a processor to indicate to a plurality of remotesystems in a distributed system that a task is available for processingbased on a list identifying the remote systems and allow at least one ofthe plurality of remote systems to perform the task.

In yet another aspect of the instant invention, a distributedcompilation system is provided for assigning compilation tasks. Thedistributed compilation system comprises one or more remote systems anda client system. The client system is adapted to indicate to the one ormore remote systems that a compilation task is available for processingbased on a list identifying the one or more remote systems, receive atleast one response from the one or more remote systems capable ofperforming the compilation task based on the indication, and allow atleast one of the remote systems to perform the compilation task based onthe at least one received response.

In yet another aspect of the instant invention, a method is provided forassigning compilation tasks. The method comprises detecting anindication from a client system to process one or more compilationtasks, determining if a remote system is capable of processing at leastone of the compilation tasks in response to detecting the indicationfrom the client system, and processing the at least one of thecompilation tasks for the client system in response to determining thatthe remote system is capable of processing the compilation task.

BRIEF DESCRIPTION OF THE DRAWINGS

The invention may be understood by reference to the followingdescription taken in conjunction with the accompanying drawings, inwhich like reference numerals identify like elements, and in which:

FIG. 1 is a block diagram of a distributed compilation system, inaccordance with one embodiment of the present invention;

FIG. 2 is a block diagram of a client system that may be employed in thedistributed compilation system of FIG. 1, in accordance with oneembodiment of the present invention; and

FIG. 3 is an illustration of a flow diagram performing one or more actsby a delegating module executing on the client system of FIG. 2, inaccordance with one embodiment of the present invention.

While the invention is susceptible to various modifications andalternative forms, specific embodiments thereof have been shown by wayof example in the drawings and are herein described in detail. It shouldbe understood, however, that the description herein of specificembodiments is not intended to limit the invention to the particularforms disclosed, but on the contrary, the intention is to cover allmodifications, equivalents, and alternatives falling within the spiritand scope of the invention as defined by the appended claims.

DETAILED DESCRIPTION OF SPECIFIC EMBODIMENTS

Illustrative embodiments of the invention are described below. In theinterest of clarity, not all features of an actual implementation aredescribed in this specification. It will of course be appreciated thatin the development of any such actual embodiment, numerousimplementation-specific decisions must be made to achieve thedevelopers' specific goals, such as compliance with system-related andbusiness-related constraints, which will vary from one implementation toanother. Moreover, it will be appreciated that such a development effortmight be complex and time-consuming, but would nevertheless be a routineundertaking for those of ordinary skill in the art having the benefit ofthis disclosure.

Referring to FIG. 1, a distributed system 3 includes a plurality ofsystems, such as a client system 5 and remote systems 20, in which tasksmay be assigned to one or more of the remote systems 20 by the clientsystem 5. For example, in one embodiment, the distributed system 3 maybe a distributed compilation system in which compilation tasks may beassigned to one or more of the remote systems 20 by the client system 5.The types of tasks that are assigned to the remote systems 20 by theclient system 5 may vary, depending on the implementation. Examples oftasks that may be assigned include, but are not limited to, imageprocessing or rendering tasks, audio processing tasks, video processingtasks, encrypting tasks, decrypting tasks, compilation tasks, or othercomputationally intensive tasks.

As utilized herein, the term “client” refers to a system that delegatesone or more tasks to other systems for completion. For ease ofillustration, the system 5 is designated as the “client” in FIG. 1,although it should be appreciated that any of the remote systems 20 mayalso be configured as a “client” so that it is able to delegate tasks tothe other remote systems 20. Thus, the roles of client and remotesystems 5, 20 may vary over time in that the various systems mayoccasionally take on the role of client and at other times operate as aremote system. It may also be possible that, in some instances, a givensystem 5, 20 performs a dual role of a client system and a remote systemby assigning tasks to other systems 5, 20 and, at substantially the sametime, performing tasks for the other systems 5, 20.

The client system 5, in the illustrated embodiment, is coupled to theremote systems 20 over a data network 22. The systems 5 and 20 may beany processor-based systems, such as computers in the form of desktops,laptops, mainframes, personal digital assistants, or the like. In oneembodiment, the systems 5, 20 may be located at various locations 23,which may be representative of different departments or centers of anorganization, or, alternatively, different offices of an organization.Thus, for example, the locations 23, in one embodiment, may representdifferent offices/centers within a building, within one or more buildingcomplexes, within a city or country, or the like.

The data network 22 may be a public or a private network. Examples ofthe data network 22 may include local area networks (LANs), wide areanetworks (WANs), intranets, the Internet, or the like. The data network22 may be a packet-switched data network, such as a data networkaccording to the Internet Protocol (IP). As utilized herein, a “datanetwork” may refer to one or more communication networks, channels,links, or paths, and systems or devices (such as routers) used to routedata over such networks, channels, links, or paths. In the illustratedembodiment, at least one router 24 is shown. Although not so limited, inone embodiment, the router 24 may be utilized for the purpose ofmulticasting, as described later.

As described in greater detail below, in accordance with one embodimentof the present invention, the process of delegating (or scheduling) thetasks, such as compilation tasks, is at least partially shifted to (orshared with) the remote systems 20. In general, the client system 5makes the remote systems 20 on the data network 22 aware of any task(s)requiring completion, and then receives responses from one or more ofthe remote systems 20 based on the capability and/or availability ofthat remote system 20. In this manner, the remote systems 20 that arerelatively more capable (in terms of processing power and/oravailability) of processing the tasks are likely to be more responsiveto the client system 5. Thus, in accordance with one embodiment, theremote systems 20 are likely to be assigned tasks commensurate withtheir capability even though the client system 5 may have little or noprior knowledge of the capabilities of the responding remote systems 20.

In the illustrated embodiment, the client system 5 includes a delegatingmodule 27 that indicates to the remote systems 20 that one or more tasksrequire completion. In one embodiment, the delegating module 27 of theclient system 5 transmits a request to one or more of the remote systems20 on the data network 22, informing the remote systems 20 of thepending task(s). The client system 5, in one embodiment, transmits therequest to a plurality of remote systems 20 substantiallysimultaneously.

In one embodiment, the client system 5 may multicast the request to theremote systems 20 on the data network 22. In a multicasting embodiment,the client system 5 announces to the router 24 that one or more tasksrequire completion. The router 24 in turn multicasts the announcement tothe available nodes or remote systems 20 based on the remote systems 20identified in a multicast group or distribution list. In one embodiment,the router 24 may dynamically update the contents of its multicastgroup. That is, as remote systems 20 become available or inaccessible,the router 24 updates its multicast group accordingly. In oneembodiment, the multicast group or distribution list may containdestination addresses associated with each of the remote systems 20included in the group or list. The router 24, in one embodiment, maysubstantially simultaneously indicate to the available remote systems 20regarding the availability of task(s). In one embodiment, the router 24may multicast the task notification to each of the available remotesystems 20 using an efficient routing path.

If a particular node or remote system 20 can perform at least one taskreceived in a multicast message, then, in one embodiment, that remotesystem 20 reserves one or more of its resources (discussed below),establishes a connection with the client system 5 to inform the clientsystem 5 that it has the capability to perform the task, and awaits forthe task to be assigned by the client system 5. The connectionestablished between the responding remote system 20 and the clientsystem 5 may, in one embodiment, be a unicast connection. The remotesystem 20 may perform the task, once it has been assigned, andthereafter provide the result(s) to the client system 5. In oneembodiment, a multicast comprises sending a request to all subscribedmembers on a list. It may be desirable to use the multicast feature toannounce the availability of task(s) to remote systems 20 because, in amulticast, the router 24 typically calculates, among other things,optimal paths for transmission, which in turn can reduce network usage.

In the illustrated embodiment of FIG. 1, the remote systems 20 include adaemon module 35, which executes on the remote systems 20, and respondsto requests from the client system 5. For example, the daemon module 35accepts compilation tasks from the client system 5, processes the tasks,and provides the compilation results to the client system 5. Althoughnot shown, in one embodiment, the client system 5 may also include thedaemon module 35.

In the illustrated embodiment, the daemon module 35 utilizes aprocessing module 40 executing on the remote systems 20 to complete thetasks that are assigned to the remote systems 20. In the context of adistributed compilation system, the processing module 40 may, forexample, compile one or more source files to produce object code files.Examples of “source files” may include source code files, resourcefiles, library files, headers, frameworks, or the like. The source codefiles may be written in one of several software languages, such as C,C++, Objective-C, Java, Pascal, Fortran, or any other desirable computerlanguage. If the distributed system 3 is a distributed compilationsystem, the processing module 40 may perform a variety of other tasks,including linking files with object code segments to produce executablefiles, performing pre-processing tasks, assembling files, or the like.In the illustrated embodiment, the client system 5 also includes theprocessing module 40.

The delegating module 27, daemon module 35, and processing module 40, inthe illustrated embodiment, are implemented in software. While thesemodules 27, 35, and 40 are illustrated as three distinct modules for thepurposes of this discussion, it should be appreciated that some or allportions of these modules may be combined or expanded into any number ofmodule(s). The modules 27, 35, and 40 in the illustrated embodiment areexecutable on the systems 5, 20, each of which may be, for example, alaptop computer, a desktop computer, a mainframe computer, a handhelddevice, or any other processor-based system capable of executinginstructions. In alternative embodiments, some or all portions of one ormore of these modules 27, 35, 40 may be implemented in hardware orfirmware.

For clarity, only selected components of the client system 5 and remotesystems 20 are shown, although it should be appreciated that thesesystems 5, 20 may include other components, depending on theimplementation. For example, in the context of a compilation system, thesystems 5, 20 may include components such as an editor, a linker, anassembler or the like to build software applications.

Referring now to FIG. 2, a stylized block diagram of the client system 5of FIG. 1 is illustrated, in accordance with one embodiment of thepresent invention. The client system 5 comprises a control unit 215,which in one embodiment may be a processor, and is capable ofinterfacing with a north bridge 220. The north bridge 220 providesmemory management functions for a memory 225, as well as serves as abridge to a peripheral component interconnect (PCI) bus 230. In theillustrated embodiment, the client system 5 includes a south bridge 235coupled to the PCI bus 230.

A storage unit 250 is coupled to the south bridge 235. The delegatingmodule 27 and the processing module 40 are storable in the storage unit250 and executable by the control unit 215. In one embodiment, if theclient module 5 includes the daemon module 35, it may also be stored inthe storage unit 250 and executed by the control unit 215. Although notshown, it should be appreciated that in one embodiment an operatingsystem, such as Windows®, Disk Operating System®, Unix®, Linux®, MACOS®, or the like, may be stored on the storage unit 250 and executableby the control unit 215. The storage unit 250 may also include devicedrivers for the various hardware components of the client system 5.

In the illustrated embodiment, the client system 5 includes a displayinterface 247 that is coupled to the south bridge 235. The client system5 may display information on a display device 248 via the displayinterface 247. The south bridge 235 of the client system 5 may include acontroller (not shown) to allow a user to input information using aninput device (not shown), such as a keyboard and/or a mouse.

The south bridge 235 of the client system 5, in the illustratedembodiment, is coupled to a network interface 260, which may be adaptedto receive, for example, a local area network card. In an alternativeembodiment, the network interface 260 may be a Universal Serial Businterface or an interface for wireless communications. The client system5 communicates with the remote system 20 coupled to the data network 22through the network interface 260.

It should be appreciated that the configuration of the client system 5of FIG. 2 is exemplary in nature and that, in other embodiments theclient system 5 may include fewer, additional, or different componentswithout deviating from the spirit and scope of the present invention.For example, in an alternative embodiment, the client system 5 may notinclude a north bridge 220 or a south bridge 235, or may include onlyone of the two bridges 220, 235, or may combine the functionality of thetwo bridges. As another example, in one embodiment, the client system 5may include more than one control unit 215. Similarly, otherconfigurations may be employed consistent with the spirit and scope ofthe present invention.

In one embodiment, the remote systems 20 may include a similarconfiguration as the client system 5 of FIG. 2. For the remote systems20, the daemon module 35 (see FIG. 1) may be stored in the storage unit250 and executed by the control unit 215. The term “daemon module,” asutilized herein, may refer to any software module or application that isexecutable by the control unit 215.

Referring now to FIG. 3, a flow diagram of one or more acts that areperformed by the delegating module 27 of the client system 5 isillustrated, in accordance with one embodiment of the present invention.Although, as noted, any one or more of a variety of tasks may beassigned by the delegating module 27, for illustrative purposes the flowdiagram depicted in FIG. 3 is described in the context of a distributedcompilation system. The delegating module 27 of the client system 5indicates (at 310) to the remote systems 20 that a compilation taskrequires completion. In one embodiment, if the client system 5 has morethan one task that requires completion, the client system 5 can indicate(at 310) that a plurality of compilation tasks needs processing. The oneor more tasks to be performed may be posted by the client system 5, forexample, in a queue, which may be accessible to the remote systems 20.

The client system 5 may indicate (at 310) to the remote systems 20 in avariety of ways that a task requires completion. For example, in oneembodiment, the delegating module 27 may transmit (at 312) a request toselect remote systems 20. In another embodiment, the delegating module27 may multicast (at 314) a request to all of the various remote systems20 coupled to the data network 22. The select remote systems 20 may beidentified, for example, based on a pre-stored (or dynamically created)list of identities of remote systems 20 that is accessible to the clientsystem 5.

In accordance with one embodiment of the present invention, the requestprovided (at 312 or at 314) by the client system 5 may identify theremote systems 20 that may respond to the request. That is, in oneembodiment, the request from the client system 5 may specify that onlythose remote systems 20 satisfying a particular criterion (or criteria)may respond to the request. The criterion may be based on definitivecriteria (such as hardware configuration of a remote system 20), morefluid criteria (such as the operational load of the remote system 20 ata given time), or a combination of both. As an example, the clientsystem 5 may require that only remote systems 20 with a CPU having aminimum operating frequency of at least 2 gigahertz respond to therequest. In other embodiments, the client system 5 may require that theresponding remote systems 20 have memory of at least a particular sizeor a network adapter of a particular speed, etc. In one embodiment, theclient system 5 may define the criteria based, for example, on thecomplexity of the task to be assigned. It should be appreciated thatcriteria defined to select remote systems 20 is a matter of designchoice, and may vary from one implementation to another. In oneembodiment, the client system 5 may not provide any criteria and maythus select one or more remote systems 20 from the remote systems 20that respond to the request.

The request transmitted (at 312 or at 314) by the client system 5 isreceived by the daemon module 35 of the remote systems 20. As noted, therequest may be transmitted to select remote systems 20 or multicast toall of the remote systems 20 on the data network 22. The daemon module35, upon receiving the request, responds to the client system 5 if theremote system 20 is available to perform the compilation task. If therequest that is transmitted (at 312 or at 314) by the client system 5specifies a criterion or criteria for responding, then the daemon module35, in one embodiment, responds only if the remote system 20 satisfiesthat criterion or criteria. In one embodiment, the act of responding tothe client system 5 may include the remote system 20 selecting the taskthat requires processing from, for example, a queue in which thatcompilation task is posted.

In one embodiment, before responding to a request, the daemon module 35reserves resource(s) (or locks down) of the remote system 20 to performthe task(s) for the client system 5. Reserving the resource(s) may bedesirable to ensure that the remote system 20 has adequate resource(s)available to process the task(s) for the client system 5. Thus, forexample, in instances where the remote system 20 may receive multiplerequests from various client systems 5 in the distributed system 3, itmay be desirable to ensure that the remote system 20 does not overcommit its resources such that it is incapable of timely processing thetask(s) for a given client system 5. Reserving a resource of the remotesystem 20 may include, for example, adjusting (e.g., reducing) thenumber of responses the remote system 20 may transmit to other clientsystems 5 as the remote system 20 responds to a given client system 5.

In accordance with one embodiment of the present invention, each of theresponding remote systems 20 may provide information regarding itsconfiguration or operational characteristics. For example, a respondingremote system 20 may provide configuration information such as itsprocessor speed, memory size, network card speed, or the like, to theclient system 5. As another example, a responding remote system 20 mayprovide operational characteristic information such as its current loador the quality of the communications channel. This information may beutilized by the client system 5 to determine which remote system 20should be assigned the compilation task in case the client system 5receives multiple responses from the qualifying remote systems 20.Because information regarding the configuration and/or operationalcharacteristic of the remote system 20 in one embodiment is provided bythe remote system 20 itself, the client system 5 does not have to expendits resources in maintaining a database (or a repository) of the remotesystems 20.

The type of configuration information or the operational characteristicinformation provided by the remote systems 20 may vary fromimplementation to another. In one embodiment, the remote systems 20 maynot provide any such information while responding to the request fromthe client system 5.

Once the remote systems 20 respond to the request from the client system5, these response(s) are received (at 320) by the delegating module 27of the client system 5. The delegating module 27, in one embodiment,determines (at 322) if more than one response is received (at 320). Ifonly a single remote system 20 responds to the request transmitted bythe client system 5, then, in one embodiment, the client system 5 allows(at 340) the responding remote system 20 to perform the task. If noresponses are received, then the client system 5 may perform the taskitself.

If, however, it is determined (at 322) that more than one remote systems20 responded, the delegating module 27 determines (at 330) which of theresponding remote systems 20 should be assigned the task. In oneembodiment, the delegating module 27 may select a remote system 20 basedon a priority (or selection) scheme. For example, in one embodiment, thedelegating module 27 may select (at 322) a remote system 20 based on theorder in which the response(s) were received (i.e., first-come,first-served basis). In another embodiment, the client system 5 mayselect (at 334) a remote system 20 based on the information provided inthe response(s). For example, if two remote systems 20 with fastprocessors respond, but one of the remote systems 20 has twice thememory as the other, then the client system 5 may select (at 334) theremote system 20 with a larger memory. In alternative embodiments, theclient system 5 may select (at 334) the remote system 20 based on anyother type of information provided in the response(s) by the remotesystems 20, such as load level, operating system, or the like. In yetanother embodiment, the client system 5 may select (at 334) the remotesystem 20 based on performance characteristics of the remote systems 20.That is, if desired, the client system 5 may maintain performancecharacteristics of the remote systems 20 based on the past assignmentsto select a particular remote system. Thus, for example, a remote system20 having a track record of completing compilation task(s) quicker thanother remote systems 20 may be selected over these other remote systems20. The client system 5 may maintain the performance characteristics(e.g., compilation times) on a compilation project basis or on any othertime interval or event basis. The delegating module 27 allows (at 340)the task to the remote system 20 that is selected (at 330) to performthe task.

In one embodiment, if multiple responses are received from the remotesystems 20, the client system 5 may assign a task to the one or more ofthe responding remote systems 20. That is, if the client system 5 hasmore than one task available for processing, these tasks may bedelegated, if desired, to the various remote systems 20 that respond. Ifthe client system 5 has no task to assign to one or more of the remotesystems 20 that respond, then, in one embodiment, the client system 5provides an indication to these remote systems 20 that a task is notavailable for processing. Based on this indication, a remote system 20may release any resources it may have allocated to complete the task forthe client system 5.

If the client system 5 has various tasks being processed by the variousremote systems 20 in the distributed system 3, the client system 5, inone embodiment, tracks the processing of these tasks. That is, theclient system 5, for each task, may track which remote system 20 isprocessing that task. The client system 5 may also, on a periodic basisor as requested by a user, request status of the processing of the tasksfrom the various remote systems 20. In this manner, a user can use theclient system 5 to readily track the processing state of each task beingprocessed by the remote systems 20 of the distributed system 3.

The daemon module 35 of the remote system 20 that is allowed to processthe task performs the task using the processing module 40 of that remotesystem 20 and provides the results to the client system 5. The clientsystem 5 receives the results (at 350). The results in one embodimentmay include one or more object code files. In another embodiment,depending on the particular task assigned, the remote system 20 maycompile the source code, link the object code, and then provide theresults in the form of executable files to the client system 5.

In one embodiment, if the number of responding remote systems 20 exceedsthe number of available tasks, the client system 5 may assign the sametask to multiple remote systems 20, and then accept the results from thefirst remote system 20 to provide the results. Once the results havebeen received from at least one of the responding remote systems 20, theclient system 5 may thereafter ignore the results from other remotesystems 20, or, alternatively, notify these remote systems 20 that theresults are no longer needed.

In some instances, a particular remote system 20 that is assigned a taskmay not successfully complete that task for a variety of reasons,including hardware failure, for example. In one embodiment, if anassigned task is not completed successfully, the client system 5 mayrepost the task in a queue and announce to the other remote systems 20that a task is available for execution. Thus, in one embodiment, aprovision is made for the client system 5 to reassign a previouslyuncompleted task to another remote system 20. In one embodiment, theclient system 5 may identify unsuccessfully completed tasks based on atiming scheme (i.e., the execution of the task may be deemed to beincomplete if the results from the remote system 20 are not receivedwithin a preselected amount of time) or based on a message exchangescheme (i.e., the client system 5 determines if the remote system 20 isresponsive based on exchange of messages).

In accordance with one or more embodiments of the present invention, anefficient way of delegating tasks in a distributed system is provided.Among other things, one or more of the described embodiments may bewell-suited for processor-intensive tasks and “busy” networks. Thedescribed embodiments may also provide various failsafe mechanism, suchas redundant task assignment. In one embodiment, the remote systems 20assist the client system 5 in performing compilation task(s). Ingeneral, the client system 5 makes the remote systems 20 on the datanetwork 22 aware of any task(s) requiring completion, and then receivesresponses from one or more of the remote systems 20 based on thecapability and/or availability of that remote system 20. In this manner,remote systems 20 that are relatively more capable (in terms ofprocessing power and/or availability) of processing the tasks respond tothe request from the client system 5. Thus, in one embodiment, theprocess of scheduling (or delegating) the compilation tasks is at leastpartially shifted to the remote systems 20. Moreover, in one embodiment,because each recipient of the tasks can determine the number of tasks itprocesses, this at least reduces the need for a centralized machine tomonitor the status of the performance of the remote systems 20.

Those skilled in the art will appreciate that the various system layers,routines, or modules illustrated in the various embodiments herein maybe executable control units (such as the control unit 215 (see FIG. 2)).The control unit 215 may include a microprocessor, a microcontroller, adigital signal processor, a processor card (including one or moremicroprocessors or controllers), or other control or computing devices.The storage devices 250 referred to in this discussion may include oneor more machine-readable storage media for storing data andinstructions. The storage media may include different forms of memoryincluding semiconductor memory devices such as dynamic or static randomaccess memories (DRAMs or SRAMs), erasable and programmable read-onlymemories (EPROMs), electrically erasable and programmable read-onlymemories (EEPROMs) and flash memories; magnetic disks such as fixed,floppy, removable disks; other magnetic media including tape; andoptical media such as compact disks (CDs) or digital video disks (DVDs).Instructions that make up the various software layers, routines, ormodules in the various systems may be stored in respective storagedevices. The instructions when executed by a respective control unit 215causes the corresponding system to perform programmed acts.

The particular embodiments disclosed above are illustrative only, as theinvention may be modified and practiced in different but equivalentmanners apparent to those skilled in the art having the benefit of theteachings herein. Furthermore, no limitations are intended to thedetails of construction or design herein shown, other than as describedin the claims below. It is therefore evident that the particularembodiments disclosed above may be altered or modified and all suchvariations are considered within the scope and spirit of the invention.Accordingly, the protection sought herein is as set forth in the claimsbelow.

1. A method, comprising: indicating to one or more remote systems in adistributed system that a task is available for processing based on adistribution list; receiving at least one response from the one or moreremote systems capable of performing the task responsive to theindication; and assigning at least one of the remote systems to performthe task based on the at least one received response, wherein assigningthe task is performed without comparing operational capabilities of theone or more remote systems to each other.
 2. The method of claim 1,wherein the distribution list comprises destination addresses associatedwith the one or more remote systems, wherein indicating to the one ormore remote systems comprises providing a message to a router that,responsive to the message, transmits at least a portion of the messageto a plurality of the remote systems based on the distribution list. 3.The method of claim 1, wherein the task is at least one of a compilationtask, video processing task, audio processing task, image processingtask, encryption task, and decryption task, and wherein indicating tothe one or more remote systems comprises indicating a thresholdcriterion that the one or more remote systems should satisfy, andwherein receiving the at least one response comprises receiving the atleast one response from the one or more remote systems that satisfy thethreshold criterion.
 4. The method of claim 3, wherein indicating thethreshold criterion comprises indicating at least one of a preselectedprocessing speed, memory size, and network speed that is desired for theone or more remote systems.
 5. The method of claim 3, wherein receivingthe at least one response comprises receiving configuration informationassociated with the one or more remote systems.
 6. The method of claim5, wherein receiving the configuration information comprises receivinginformation including at least one of a processing speed, memory size,network speed, and load level associated with the one or more remotesystems.
 7. (canceled)
 8. (canceled)
 9. The method of claim 1, whereinthe act of indicating comprises indicating that the compilation task isavailable for processing, and wherein the act of receiving comprisesreceiving the at least one response from a remote system that hasreserved at least a portion of its resources for performing the task.10. An article comprising one or more machine-readable storage mediacontaining instructions that when executed enable a processor to:indicate to a plurality of remote systems in a distributed system that atask is available for processing based on a list identifying the remotesystems; and assign at least one of the plurality of remote systems toperform the task, wherein assigning the task is performed withoutcomparing operational capabilities of the remote systems of theplurality of remote systems to each other.
 11. The article of claim 10,wherein the task is a compilation task, and wherein the instructionswhen executed enable the processor to allow at least one of theplurality of remote systems based on a selection scheme.
 12. The articleof claim 11, wherein the instructions when executed enable the processorto allow that remote system which responds first to perform the task.13. The article of claim 11, wherein the instructions when executedenable the processor to allow the remote system having a desirableperformance characteristic, wherein the performance characteristic isdetermined based on past performance.
 14. The article of claim 11,wherein the instructions when executed enable the processor to allow aplurality of remote systems to perform the task in response todetermining that a number of responding remote systems exceed a numberof available tasks.
 15. The article of claim 11, wherein theinstructions when executed enable the processor to receive responsesfrom at least one of the plurality of the remote systems, wherein theresponse includes configuration information associated with the one ormore remote systems.
 16. The article of claim 10, wherein theinstructions when executed enable the processor to multicast a requestto the plurality of remote systems coupled to a network that the task isavailable for processing.
 17. The article of claim 10, wherein theinstructions when executed enable the processor to receive results fromthe at least one remote system that is allowed to perform the task. 18.(canceled)
 19. An apparatus, comprising: an interface adapted tocommunicate with one or more remote systems; and a control unitcommunicatively coupled to the interface, the control unit adapted to:indicate to the one or more remote systems in a distributed compilationsystem that a task is available for processing based on a listidentifying the one or more remote systems; receive at least oneresponse from the one or more remote systems capable of performing thetask based on the indication; and assign at least one of the remotesystems to perform the task based on the at least one received response,wherein assigning the task is performed without comparing operationalcapabilities of the remote systems of the plurality of remote systems toeach other.
 20. The apparatus of claim 19, wherein the task is acompilation task, and wherein the control unit is adapted to multicast amessage to a plurality of the remote systems on a network that acompilation task is available and is adapted to indicate a thresholdcriterion that the one or more remote systems should satisfy and furtheradapted to receive the at least one response from the one or more remotesystems that satisfy the threshold criterion.
 21. (canceled)
 22. Theapparatus of claim 20, wherein the control unit is adapted to indicateat least one of a minimum processing speed, memory amount, and networkspeed that is desired for the one or more remote systems and is adaptedto receive configuration information associated with the one or moreremote systems.
 23. (canceled)
 24. (canceled)
 25. The apparatus of claim22, wherein the control unit is adapted to allow at least one of theremote systems to perform the task based on a selection scheme.
 26. Theapparatus of claim 25, wherein the selection scheme comprises at leastone of allowing a remote system that responds first to perform thecompilation task or allowing a remote system with a desirable pastperformance characteristic to perform the compilation task. 27.-36.(canceled)